Assigning devices to virtual machines in view of power state information

ABSTRACT

In one implementation, a method of sharing a physical device between multiple virtual machines is provided. The method includes receiving, from a first virtual machine, a request to access a physical device of a computing device. The method also includes assigning, by a processing device, the physical device to the first virtual machine in view of power state information associated with the physical device of the computing device, wherein the power state information is received from one or more other virtual machines of the computing device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/381,072, filed on Apr. 11, 2019, the disclosure of which isincorporated herein by reference in its entirety.

TECHNICAL FIELD

Aspects of the present disclosure relate to virtual environments, suchas virtual machines (VMs). In particular, aspects of the presentdisclosure relate to sharing devices among virtual machines.

BACKGROUND

A computing device may include one or more virtual environments. Onetype of virtual environment may be a virtual machine (VM) that mayexecute on a hypervisor which executes on top of the OS for thecomputing device (e.g., a host OS). The hypervisor may manage systemsources (including access to hardware devices, such as processors,memories, storage devices). The hypervisor may also emulate the hardware(or other physical resources) which may be used by the VMs to executesoftware/applications. Another type of virtual environment may be acontainer that may execute on a container engine which executes on topof the OS for a computing device, as discussed in more detail below. Thecontainer engine may allow different containers to share the OS of acomputing device (e.g., the OS kernel, binaries, libraries, etc.), asdiscussed in more detail below. The container engine may also performother functions, as discussed in more detail below.

A virtual machine may include various virtual devices (e.g., emulateddevices) that may correspond to physical devices of a computing device.For example, a virtual machine may include a virtual network interfacecard (NIC) which may correspond to a physical network interface card ofthe computing device. The virtual machine may use the virtual networkinterface card to transmit or receive packets, messages, frames, etc.The hypervisor may use the physical network interface card tocommunicate the packets to and from the virtual network interface cardand the physical network interface card.

BRIEF DESCRIPTION OF THE DRAWINGS

The described embodiments and the advantages thereof may best beunderstood by reference to the following description taken inconjunction with the accompanying drawings. These drawings in no waylimit any changes in form and detail that may be made to the describedembodiments by one skilled in the art without departing from the spiritand scope of the described embodiments.

FIG. 1 is a block diagram that illustrates a computing device, inaccordance with some embodiments of the present disclosure.

FIG. 2 is a sequence diagram illustrating example actions that may beperformed by virtual machines and a hypervisor, in accordance with oneor more embodiments of the present disclosure.

FIG. 3A is a flow diagram of a method of sharing a physical devicebetween multiple virtual machines, in accordance with some embodimentsof the present disclosure.

FIG. 3B is a flow diagram of a method of determining whether a physicaldevice is available, in accordance with some embodiments of the presentdisclosure.

FIG. 4 is a block diagram of an example apparatus that may perform oneor more of the operations described herein, in accordance with someembodiments.

FIG. 5 is a block diagram of an example computing device that mayperform one or more of the operations described herein, in accordancewith some embodiments of the present disclosure.

DETAILED DESCRIPTION

As discussed above, a virtual machine (VM) may execute on a hypervisorwhich executes on top of the OS for the computing device (e.g., a hostOS). The hypervisor may manage system sources (including access tohardware devices, such as processors, memories, storage devices). Thehypervisor may also emulate the hardware (or other physical resources)which may be used by the VMs to execute software/applications. A VM mayinclude a virtual device that corresponds to a physical device (e.g., aphysical component, module, etc.) of the computing device. Many types ofphysical devices may not be sharable between different virtual machines.Thus, if a physical device is not sharable between different virtualmachines, then the physical device may not be assigned to multiplevirtual machines simultaneously. For example, a physical device may beassigned to a single virtual machine at a time. Some devices may beshareable and may able to multiplex data between different virtualdevices or virtual machines. For example, a peripheral componentinterconnect express (PCIe) device may support virtual functions thatallow different virtual machines, virtual devices, or applications toshare the use of the PCIe device. Data may be multiplexed between thedifferent virtual machines, virtual devices, or applications and thePCIe device by using the virtual functions to communicate data with thePCIe device. However, these devices often have a limit on the number ofvirtual machines, virtual devices, or applications that may share theuse of the virtual device. For example, a PCIe device may not be able tosupport more than eight virtual machines, virtual devices, orapplications. In addition, multiplexing data communicated with aphysical device between multiple virtual machines may result inmodifying the guest OSes of the virtual machines. This may be acomplicated and costly process, and many vendors of guest OSes may notwant to modify the guest OSes.

The present disclosure addresses the above-noted and other deficienciesby using power state information to share a physical device. Whenvirtual machines transition their respective virtual devices, that areassociated with the physical device, to a reduced power state, thehypervisor may be aware that the physical device is available for otherdevices to use or access. For example, if all of the virtual machineshave transitioned their respective virtual devices to a reduced powerstate, this may indicate that none of the virtual machines are currentlyusing the physical device because a reduced power state may indicatethat a virtual machine has powered down a virtual device and is notusing the physical device associated with the virtual device. When oneof the virtual machines requests to power on a virtual device at a laterpoint in time, the hypervisor may be able to assign the physical deviceto the virtual machine because the hypervisor may be aware that none ofthe other virtual machines are currently using the physical device. Inaddition, embodiments, examples, and implementations described hereinmay not have a limit on the number of virtual machines that may sharethe use of a physical device. For example, the number of virtualmachines that may share the use of the physical device may not belimited by how many virtual machines the physical device is able tosupport. In another example, an unlimited number of virtual machines mayshare the physical device.

FIG. 1 is a block diagram that illustrates a computing device 100, inaccordance with some embodiments of the present disclosure. Thecomputing device 100 includes a physical device 105, a host OS 110, ahypervisor 111, and a virtual machine (VM) 120. The computing device 100may also include hardware such as processing devices (e.g., processors,central processing units (CPUs), memory (e.g., random access memory(RAM), storage devices (e.g., hard-disk drive (HDD), solid-state drive(SSD), etc.), and other hardware devices (e.g., sound card, video card,etc.). The computing device 100 may comprise any suitable type ofcomputing device or machine that has a programmable processor including,for example, server computers, desktop computers, laptop computers,tablet computers, smartphones, set-top boxes, etc. In some examples, thecomputing device 100 may comprise a single machine or may includemultiple interconnected machines (e.g., multiple servers configured in acluster). The computing device 100 may execute or include a hostoperating system (OS) 110. The host OS 110 may manage the execution ofother components (e.g., software, applications, etc.) and/or may manageaccess to the hardware (e.g., processors, memory, storage devices etc.)of the computing device.

As discussed above, one type of a virtual environment may be a VM 120executing on a computing device 100. In one embodiment, the VM 120 maybe a software implementation of a machine (e.g., a softwareimplementation of a computing device) that includes its own operatingsystem (referred to as guest OS 121) and executes application programs,applications, software. VM 120 may be, for example, a hardwareemulation, a full virtualization, a para-virtualization, and anoperating system-level virtualization VM.

Computing device 100 may include a hypervisor 111, which may also beknown as a virtual machine monitor (VMM). In the example shown,hypervisor 111 may be a component of a host operating system 110. Inanother example, hypervisor 111 may run on top of a host operatingsystem 100 (e.g., may be an application executing on the computingdevice 100), or may run directly on host hardware without the use of ahost operating system 100. Hypervisor 111 may manage system resources,including access to physical processing devices (e.g., processors, CPUs,etc.), physical memory (e.g., RAM), storage device (e.g., HDDs, SSDs),and/or other devices (e.g., sound cards, video cards, etc.). Thehypervisor 111, though typically implemented in software, may emulateand export a bare machine interface to higher level software in the formof virtual processors and guest memory. Higher level software maycomprise a standard or real-time operating system (OS), may be a highlystripped down operating environment with limited operating systemfunctionality, may not include traditional OS facilities, etc.Hypervisor 111 may present other software (i.e., “guest” software) theabstraction of one or more virtual machines (VMs) that provide the sameor different abstractions to various guest software (e.g., guestoperating system, guest applications).

As illustrated in FIG. 1A, the VM 120 includes a virtual device 122 andVM 130 includes a virtual device 132. In one embodiment, virtual devices122 and 132 may be emulated devices. Virtual devices 122 and 132 maycorrespond to physical device 105 (e.g., may be associated with physicaldevice 105). The physical device 105 may be a physical device,component, circuit, or other hardware. For example, the physical device105 may an encryption processor, a tensor operation processor, agraphics processing unit (GPU), etc.)

In one embodiment, the hypervisor 111 may allow the physical device 105to be associated with both the virtual device 112 (or the VM 120) andthe virtual device 132 (or the VM 130), simultaneously. For example,both VM 120 and VM 130 may be simultaneously executing, operating, etc.,on the computing device 100. The physical device 105 may be associatedwith the virtual device 122 and the virtual device 132 while both VM 120and VM 130 are executing, operating, etc., on the computing device 100.As discussed above, a physical device may generally not be associatedwith two or more VMs simultaneously without modifying a guest OS tosupport multiplexing of data.

In one embodiment, the guest OSes 121 and 131 may use various standardsfor power state information and for sending messages (e.g., commands orother data) to transition the virtual devices 122 and 132 betweendifferent power states. For example, the guest OSes 121 and 131 may usethe Advance Configuration and Power Interface (ACPI) standard. The ACPIstandard may define various power states for devices and may define alist of commands or formats for the commands to transition the devicesto the various power states. For example, the ACPI standard includes theD0, D1, D2, and D3 power states for devices. D0 may be referred to as afully on or operating state. D0 may be an example of an active powerstate. D1 and D2 may be intermediate power states where the device usesless power than in the D0 power state. D3 may be referred to as an offpower state. D1 through D3, may be examples of a reduced power state.Although the present disclosure may refer to the ACPI standard, variousother standards, which include different power states, may be used inother embodiments.

The VM 120 may power on the virtual device 122 and the hypervisor 111may assign the physical device 105 to the VM 122. In one embodiment, thehypervisor 111 may receive a message from the VM 120 (or guest OS 121)indicating that the VM 120 is requesting to transition the virtualdevice 122 to a different power state. For example, the VM 120 maytransmit a message (e.g., a command or other data) to the hypervisor 111indicating that the VM 120 is requesting to transition the virtualdevice 122 from a first power state to a second power state. The firstpower state may be a passive power state and the second power state maybe an active power state. A passive power state may be a power statewhich indicates that the virtual device 122 is using less power thanother states (e.g., an active power state). An active power state may bea power state in which the virtual device is using more power than thereduced power state. Generally, the virtual device 122 may use morepower in the second power state than the first power state.

In one embodiment, the VM 120 or the guest OS 121 may transmit themessage to the hypervisor 111 indicating that the VM 120 is requestingto transition the virtual device 122 to a different power state when theguest OS 121 determines that the virtual device 122 has not be accessedor used for a period of time (e.g., a threshold period of time). Forexample, the guest OS 121 may determine that the virtual device 122 hasnot been accessed or used by any applications, processes, services,etc., of the VM 120 for the last minute, last five minutes, or someother appropriated period of time. The guest OS 121 may transmit acommand (which may be defined by the ACPI standard or some otherstandard) to the virtual device 122 to transition the virtual device 122from a D0 state to one of the states D1 through D3. In anotherembodiment, the hypervisor 111 may intercept the message transmitted bythe VM 120 or the guest OS 121. For example, the guest OS 121 may be anOS that may execute or operate outside of a virtual machine. Thus, theguest OS 121 may operate as if the virtual device 122 were a physicaldevice. When the guest OS 121 sends a message to the virtual device 122to transition the virtual device 122 to a different power state, thehypervisor 111 may intercept or trap this message.

In one embodiment, the guest OS 121 may save device state informationfor the virtual device 122 when the guest OS 121 transitions the virtualdevice 122 to a reduced power state. For example the guest OS 121 maysave information about the operations or actions that were pending onthe virtual device 122. In another example, the guest OS 121 may savethe data that may be used by the virtual device 122. Examples of thedata that may be used by the virtual device 122 may include buffer data,register values, etc.

In one embodiment, the messages indicating that a VM is requesting totransition a virtual device to a different power state may be referredto as power state information. For example, the messages may allow thehypervisor 111 to determine the current power state of the virtualdevices 122 and 132, and other virtual devices. In another embodiment,the power state information may be a table, list, or other data thatindicates the current power state of the virtual devices that areassociated with the physical device 105. For example, the hypervisor 111may maintain or manage a table (e.g., power state information) thatincludes a list of the virtual machines and the virtual devices of thevirtual machines. Each entry in the table may identify a virtualmachine, a virtual device, the physical device that the virtual deviceis associated with, and the current power state of the virtual device.

In one embodiment, the hypervisor 111 may receive a request from the VM130 to access the physical device 105. For example, the guest OS 131 maytransmit a message to virtual device 132 to transition the virtualdevice 132 from a passive power state to an active power state becausethe guest OS 131 has determine that an application, process, service,etc., of the VM 130 is requesting to use or access the virtual device132. The hypervisor 111 may intercept or trap the message from the VM130 to the virtual device 132. In another example, the guest OS 131 maydirectly transmit the message to the hypervisor 111 indicating that theVM 130 is transitioning the virtual device 132 from a passive powerstate to an active power state.

The hypervisor 111 may determine whether the physical device 105 isavailable for the VM 130 to access or use, based on power stateinformation. For example, the hypervisor 111 may determine whether anyof the VMs are using or accessing the physical device 105 based on themessages from VMs requesting to transition respective virtual devices todifferent power states. In another example, the hypervisor 111 maydetermine may determine whether any of the VMs are using or accessingthe physical device 105 based on table, a list, etc., which indicatesthe current power state of the different virtual devices of thedifferent VMs. In one embodiment, the hypervisor 111 may determine thatthe physical device 105 is available if the power state informationindicates that all of the other VMs (e.g., VM 120) have transitionedtheir respective virtual devices (which are associated with the physicaladvice 105) to a reduced power state. Because the reduced power stateindicates that respective virtual devices have not been accessed or usedthe physical device 105 for a period of time, the hypervisor 111 maydetermine that the physical device 105 is not being used by other VMs(e.g., is not being used by VM 120) and may determine that the physicaldevice 105 is available for the VM 130 to access or use.

TABLE 1 Virtual Device Physical Device Current VM Identifier IdentifierIdentifier Power State VM 120 VD 122 PD 105 D2 VM 130 VD 132 PD 105 D3VM 120 VD 3 PD 2 D0 VM 120 VD 4 PD 2 D2

Table 1 above illustrates example power state information that may bemaintained, updated, or used by the hypervisor 111 to determine whethera physical device is available. The first column indicates an identifier(e.g., alphanumeric text, a name, or some other appropriate value) for aVM (e.g., VM 120 or VM 130). The second column indicates an identifierfor a virtual device of the VM (e.g., alphanumeric text, a name, or someother appropriate value). The third column indicates an identifier for aphysical device (e.g., PD 105) of the computing device 100. The fourthcolumn indicates the current power state of the virtual device (e.g.,one or more of states D0 through D3). As illustrated in Table 1,physical device 105 is associated with virtual devices 122 and 132.Virtual device 122 is in a reduced power state (e.g., D2) and virtualdevice 132 is also in a reduced power state (e.g., D3). Thus, thephysical device 105 is available because all of the virtual machines 122and 132 that are associated with the physical device 105 are in areduced power state. Also as illustrated in Table 1, physical device PD2 is associated with virtual device VD 3 (of virtual machine 120) andvirtual device VD 4 (of virtual machine 130). Virtual device VD 3 is inan active power state (e.g., D0) and virtual device VD 4 is in a reducedpower state (e.g., D2). Thus, if virtual machine 130 were to request totransition virtual device VD 4 to an active power state, the hypervisor111 may not allow VM 130 to transition virtual device VD 4 to the activepower state, because the physical device PD 2 is not available (e.g., iscurrently being used by VM 120).

If the hypervisor 111 determines that VM 120 and other VMs (notillustrated in the figures) are not currently accessing or using thephysical device 105, the hypervisor 111 may assign the physical device105 to the VM 130. For example, the guest OS 131 may access or the usethe virtual device 132 to perform various operations or functions (e.g.,to perform encryption operations, tensor operations, floating pointoperations, etc.). The hypervisor 111 may allow the operations orfunctions to be forwarded to the physical device 105 or to be performedby the physical device 105 because the physical device 105 is assignedto the VM 130.

If a first VM of the computing device 100 is already using the physicaldevice 105, the first VM that is currently using the physical device 105may block other VMs from using the physical device 105 for a period oftime, and possible indefinitely. If the first VM that is currently usingthe physical device 105 and the other VMs are from the same tenant(e.g., the same user or organization), the tenant may allow the first VMto continue using the physical device 105. Alternatively, the tenant maywant to allow the other VMs to use the physical device 105 and may pauseor stop the first VM. Regardless of whether the VMs of the computingdevice 100 belong to a single tenant or multiple tenants, it may beuseful to provide mechanisms to allow VMs to be stopped or paused sothat that the VMs do not block the use of the physical device 105 fortoo long a period of time, as discussed in more detail below.

In one embodiment, if the hypervisor 111 determines that VM 120 oranother VM (not illustrated in the figures) is currently accessing orusing the physical device 105, the hypervisor 111 may refrain fromassigning the physical device 105 to the VM 130. For example, thehypervisor 111 may deny the VM 130 access to the physical device 104 ormay not assign the physical device 105 to the VM 130 for a period oftime, as discussed in more detail below. In one embodiment, thehypervisor 111 may transmit a message to the VM 130 indicating that thevirtual device 132 is not available or usable by the VM 130. Forexample, the hypervisor may transmit a message to the VM 130 or guest OS131 indicating that the virtual device 132 could not be transitioned toan active power state. This may indicate to the guest OS 131 and the VM130 that the virtual device 132 or the physical device 105 is notavailable for access or use.

In one embodiment, if the hypervisor 111 determines that VM 120 oranother VM (not illustrated in the figures) is currently accessing orusing the physical device 105, the hypervisor 111 may pause (e.g.,suspend, stop, etc.) the execution or operation of the VM 130.Suspending the execution or operation of the VM 130 may allow the VM 130to wait until the physical device 105 is no longer used by other VMs.For example, suspending the execution or operation of the VM 130 mayallow an application executing on the VM 130 that uses the virtualdevice 132 (and thus physical device 105) to continue executing witherrors that may result from waiting for access to the physical device105.

In one embodiment, if the hypervisor 111 determines that VM 120 oranother VM (not illustrated in the figures) is currently accessing orusing the physical device 105, the hypervisor 111, the hypervisor 111may transmit a message to a user of the VM 130 to indicate that thephysical device 105 could not be assigned to the VM 130. For example,the hypervisor 111 may transmit a chat message, an email message, etc.,to the user of the VM 130. In another example, the hypervisor 111 mayprovide a message in a graphical user interface (GUI) that is presented,displayed, etc., to the user of the VM 130.

In one embodiment, if the hypervisor 111 determines that VM 120 oranother VM (not illustrated in the figures) is currently accessing orusing the physical device 105, the hypervisor 111, the hypervisor 111may transmit a message to a user of the VM 120 to indicate that the VM130 is requesting to use or access the physical device 105. For example,the hypervisor 111 may transmit a chat message, an email message, etc.,to the user of the VM 130. In another example, the hypervisor 111 mayprovide a message in a graphical user interface (GUI) that is presented,displayed, etc., to the user of the VM 120. This may allow the user ofthe VM 120 to pause the execution or operation of the VM 120 or theservice, application, process, etc., that is using the physical device105. Pausing the execution or operation of the VM 120 or the service,application, process, etc., that is using the physical device 105 mayallow the hypervisor 111 to assign the physical device 105 to the VM130.

In one embodiment, if the hypervisor 111 determines that VM 120 oranother VM (not illustrated in the figures) is currently accessing orusing the physical device 105, the hypervisor 111, the hypervisor 111may reassign the physical device 105 to the VM 130. For example, thehypervisor 111 may pause the execution or operation of the VM 120 (orother VM) and assign the physical device 105 to the VM 130. This mayallow the VM 130 to access or use the physical device 105. Thehypervisor 111 may also instruct the VM 120 or the guest OS 121 to stopusing the virtual device 122 or to save device state information for thevirtual device 122 (e.g., data such as buffer data, register values, theoperations or actions that are being performed by the virtual device122, etc.). This may allow the hypervisor 111 to reassign the physicaldevice 105 back to the VM 120 at a later point in time. For example,after the VM 130 indicates that the VM 130 is requesting to transitionthe virtual device 132 to a reduced power state, the hypervisor 111 mayreassign the physical device 105 to the VM 120 and the device stateinformation may allow the VM 120 to continue the operations or actionsthat were being performed by the virtual device 122.

In one embodiment, if the hypervisor 111 determines that VM 120 oranother VM (not illustrated in the figures) is currently accessing orusing the physical device 105, the hypervisor 111, the hypervisor 111may reassign the physical device 105 to the VM 130 after a thresholdperiod of time has passed. For example, the hypervisor 111 may reassignthe physical device 105 to the VM 130 after one minute, five minutes orsome other appropriate period of time has passed. This may prevent a VMfrom using or accessing the physical device 105 for too long a period oftime. For example, this may prevent a VM from monopolizing or blockingthe use of the physical device 105. The hypervisor 111 may also instructthe VM 120 or the guest OS 121 to stop using the virtual device 122 orto save device state information for the virtual device 122 (e.g., datasuch as buffer data, register values, the operations or actions that arebeing performed by the virtual device 122, etc.) after the thresholdperiod of time has elapsed.

In one embodiment, if the hypervisor 111 determines that VM 120 oranother VM (not illustrated in the figures) is currently accessing orusing the physical device 105, the hypervisor 111 may periodicallyanalyze power state information to determine whether the physical device105 is available. For example, the hypervisor 111 determine whether alater message is received from the VM 120 (or other VM) indicating thatthe VM 120 is transitioning the virtual device 122 to a reduced powerstate. In another example, the hypervisor 111 may periodically poll theVM 120 to determine whether the VM 120 is transitioning the virtualdevice 122 to a reduced power state. If the hypervisor 111 determines ata later point in time that the VM 120 is no longer using the physicaldevice 105 (e.g., the VM 120 transitions the virtual device 122 to areduced power state), the hypervisor 111 may reassign the physicaldevice to the VM 130. If the hypervisor 111 determines at a later pointin time that the VM 120 is still using the physical device 105, thehypervisor 111 may continue to periodically analyze power stateinformation to determine whether the physical device 105 is available.

In some embodiments, multiple VMs may request to use or access thephysical device 105. For example, VM 120 may be currently using thephysical device 105 and VM 130 and another VM (not illustrated in thefigures) may request to use or access the physical device 105. Thehypervisor 111 may use a queue, lists, etc., to determine which VMs arewaiting to use or access the physical device 105. When VM 120 finishesusing the physical device 105, the hypervisor 111 may identify a next VMto use or access the physical device 105 based on various parameters orcriteria. For example, the hypervisor 111 may identify the VM that hasthe earliest request to use or access the physical device 105. Inanother example, the hypervisor 111 may prioritize certain VMs becausethe certain VMs are performing more important actions or operationsusing the physical device 105.

In one embodiment, the virtual devices 122 and 132 may bepara-virtualized devices. A para-virtualized device may be a device thatmay be able to communicate with a physical device (associated with thepara-virtualized device) directly via a para-virtualized device driver.This may allow a guest OS to query the physical device to determine ifthe physical device is currently in use. For example, virtual device 122may be a para-virtualized device and guest OS 121 may usepara-virtualized device drivers to directly communicate with physicaldevice 105 to determine whether the physical device 105 is currentlybeing used. If the physical device 105 is not being used, the guest OS121 may transition the virtual device 122 to an active power state. Ifthe physical device 105 is being used, the guest OS 121 may not attemptto transition the virtual device 122 to an active power state.

Although the present disclosure may refer to virtual machines, theembodiments, examples, implementations, etc., described herein may applyto other types of virtual environments. For example, another type ofvirtual environment may be a container executing on a computing device.In one embodiment, the container may be an isolated set of resourcesallocated to executing an application, software, and/or processindependent from other applications, software, and/or processes. A hostOS may use namespaces to isolate the resources of the containers fromeach other. In another embodiment, the container may be a virtualizedobject similar to virtual machines. However, container may not implementseparate guest OS (like VMs 120 and 130 illustrated in FIG. 1 ). Thecontainer may share the kernel, libraries, and binaries of the host OSother containers that are executing on the computing device. In oneembodiment, a host OS may include a container engine which may allowdifferent containers to share the host OS (e.g., the OS kernel,binaries, libraries, etc.) of the computing device. For example, thecontainer engine may multiplex the binaries and/or libraries of the hostOS between multiple containers. The container engine may also facilitateinteractions between the container and the resources of the computingdevice. For example, the container engine may manage requests fromcontainer to access a memory (e.g., a RAM) of the computing device. Inanother example, the container engine may manage requests from thecontainer to access certain libraries/binaries of the host OS. In otherembodiments, the container engine may also be used to create, remove,and manage containers. In one embodiment, the container engine may be acomponent of a host operating system. In another embodiment, containerengine may run on top of a host operating system, or may run directly onhost hardware without the use of a host operating system.

FIG. 2 is a sequence diagram illustrating example actions that may beperformed by virtual machines 120 and 130, and a hypervisor 111, inaccordance with one or more embodiments of the present disclosure. Theactions illustrated in the sequence diagram 200 may be performed whenthe hypervisor 111 allows the VMs 120 and 130 to share a physical device(e.g., physical device 105 illustrated in FIG. 1 ).

At block 205, the VM 120 may power on a first virtual device (e.g.,virtual device 122 illustrated in FIG. 1 ). For example, when the VM 120boots (e.g., when the guest OS 121 boots or starts), the VM 120 maytransmit a message or data indicating that the first virtual device ispowering on. At block 210, the hypervisor 111 may assign the physicaldevice to the VM 120 and the physical device may be associated with thefirst virtual device. At block 215, the VM 130 may power on a secondvirtual device (e.g., virtual device 132 illustrated in FIG. 1 ). Forexample, when the VM 120 boots (e.g., when the guest OS 121 boots orstarts), the VM 120 may transmit a message or data indicating that thesecond virtual device is powering on. The hypervisor 111 may refrainfrom assigning the physical device to VM 130 at block 220. For example,the hypervisor 111 may deny the VM 130 access to the physical device105. At block 225, the hypervisor 111 may also pause the VM 130. Forexample, the hypervisor 111 may pause, stop, halt, etc., the executionof the VM 130.

At block 230, the hypervisor 111 may periodically determine if thephysical device is available (e.g., has become available). For example,the hypervisor 111 may wait to receive a message from the VM 120indicating that the VM 120 is transitioning the first virtual device toa reduced power state. At block 235, the VM 120 may transition the firstvirtual device to a reduced power state. For example, the VM 120 may notuse the first virtual device for a period of time and may transition thefirst virtual device to a reduced power state. At block 240, thehypervisor 111 may receive the message from the VM 120 or may interceptthe message from the VM 120 indicating that the first virtual device hasbeen transitioned to a reduced power state. At block 240, the hypervisor111 may assign the physical device to the VM 130. The hypervisor 111 mayalso un-assign the physical device from the VM 120. At block 245, thehypervisor 111 may un-pause the VM 120.

FIG. 3A is a flow diagram of a method of sharing a physical devicebetween multiple virtual machines, in accordance with some embodimentsof the present disclosure. Method 300 may be performed by processinglogic that may comprise hardware (e.g., circuitry, dedicated logic,programmable logic, a processor, a processing device, a centralprocessing unit (CPU), a system-on-chip (SoC), etc.), software (e.g.,instructions running/executing on a processing device), firmware (e.g.,microcode), or a combination thereof. In some embodiments, the method300 may be performed by a hypervisor (e.g., hypervisor 111 illustratedin FIG. 1 ) and/or a computing device (e.g., computing device 100illustrated in FIG. 1 ).

At block 305, the method 300 may receive a request to access a physicaldevice. For example, the method 300 may receive a message indicatingthat a first virtual machine is transitioning a first virtual device toan active power state and the first virtual device may be associatedwith the physical device. The physical device may also be associatedwith other virtual devices of other virtual machines simultaneously. Atblock 310, the method 300 may determine whether the physical device isavailable based on power state information associated with the physicaldevice. For example, the method 300 may determine whether anothervirtual machine has already transitioned a respective virtual device toan active power state and whether that virtual device is still in theactive power state based on a table, such as Table 1. If another virtualmachine is currently using the physical device, the method 300 mayrefrain from assigning the physical device to the virtual machine atblock 315. For example, the method 300 may pause the virtual machine andmay not assign the physical device to the virtual machine. The method300 may proceed back to block 310 where the method 300 may periodicallydetermine whether the physical device is available. If the physicaldevice is available, the method 300 may assign the physical device tothe virtual machine at block 320.

FIG. 3B is a flow diagram of a method 350 of determining whether aphysical device is available, in accordance with some embodiments of thepresent disclosure. Method 350 may be performed by processing logic thatmay comprise hardware (e.g., circuitry, dedicated logic, programmablelogic, a processor, a processing device, a central processing unit(CPU), a system-on-chip (SoC), etc.), software (e.g., instructionsrunning/executing on a processing device), firmware (e.g., microcode),or a combination thereof. In some embodiments, the method 350 may beperformed by a hypervisor (e.g., hypervisor 111 illustrated in FIG. 1 )and/or a computing device (e.g., computing device 100 illustrated inFIG. 1 ).

At block 355, the method 350 may analyze power state informationassociated with a physical device. For example, the method 350 analyze atable (similar to Table 1 illustrated above) to identify all of thevirtual devices that are associated with the physical device. The method350 may also analyze the table to determine the current power state ofall of the virtual devices that are associated with the physical device.At block 360, the method 350 may determine whether any of the virtualdevices that are associated with the physical device are in an activepower state (e.g., state D0 of the ACPI standard). If any of the virtualdevices that are associated with the physical device are in an activepower state, the method 350 determines that the physical device is notavailable at block 370. If none of the virtual devices that areassociated with the physical device are in an active power state (e.g.,all of the virtual devices that are associated with the physical deviceare in a reduced power state, such as states D1 through D3 of the ACPIstandard), the method 350 determines that the physical device isavailable at block 365.

FIG. 4 is a block diagram of an example apparatus 400 that may performone or more of the operations described herein, in accordance with someembodiments. The apparatus 400 may be an example of a computing device.The apparatus 400 includes a memory 405 to store data 406. The apparatus400 also includes a processing device 410 operatively coupled to thememory 405. The processing device 410 may receive, from a first virtualmachine, a request to access a physical device 420 of a computingdevice. The processing device 410 may also determine whether thephysical device 420 of the computing device is available in view ofpower state information associated with the physical device 425 of thecomputing device. In response to determining that the physical device ofthe computing device is available, the processing device 410 may assignthe physical device to the first virtual machine

FIG. 5 illustrates a diagrammatic representation of a machine in theexample form of a computer system 500 within which a set ofinstructions, for causing the machine to perform any one or more of themethodologies discussed herein, may be executed. In alternativeembodiments, the machine may be connected (e.g., networked) to othermachines in a local area network (LAN), an intranet, an extranet, or theInternet. The machine may operate in the capacity of a server or aclient machine in a client-server network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a personal computer (PC), a tablet PC, a set-top box(STB), a Personal Digital Assistant (PDA), a cellular telephone, a webappliance, a server, a network router, a switch or bridge, a hub, anaccess point, a network access control device, or any machine capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that machine. Further, while only a singlemachine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methodologies discussed herein. In one embodiment, computer system500 may be representative of node, such as node 131 illustrated in FIG.1 .

The exemplary computer system 500 includes a processing device 502, amain memory 504 (e.g., read-only memory (ROM), flash memory, dynamicrandom access memory (DRAM), a static memory 506 (e.g., flash memory,static random access memory (SRAM), etc.), and a data storage device518, which communicate with each other via a bus 530. Any of the signalsprovided over various buses described herein may be time multiplexedwith other signals and provided over one or more common buses.Additionally, the interconnection between circuit components or blocksmay be shown as buses or as single signal lines. Each of the buses mayalternatively be one or more single signal lines and each of the singlesignal lines may alternatively be buses.

Processing device 502 represents one or more general-purpose processingdevices such as a microprocessor, central processing unit, or the like.More particularly, the processing device may be complex instruction setcomputing (CISC) microprocessor, reduced instruction set computer (RISC)microprocessor, very long instruction word (VLIW) microprocessor, orprocessor implementing other instruction sets, or processorsimplementing a combination of instruction sets. Processing device 502may also be one or more special-purpose processing devices such as anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA), a digital signal processor (DSP), network processor,or the like. The processing device 502 is configured to executeprocessing logic 526, which may be one example of hypervisor 111 of FIG.1 , for performing the operations and steps discussed herein.

The data storage device 518 may include a non-transitorymachine-readable storage medium 528, on which is stored one or more setof instructions 522 (e.g., software) embodying any one or more of themethodologies of functions described herein, including instructions tocause the processing device 502 to execute hypervisor 111. Theinstructions 522 may also reside, completely or at least partially,within the main memory 504 or within the processing device 502 duringexecution thereof by the computer system 500; the main memory 504 andthe processing device 502 also constituting machine-readable storagemedia. The instructions 522 may further be transmitted or received overa network 520 via the network interface device 508.

The non-transitory machine-readable storage medium 528 may also be usedto store instructions to perform a method for multi-level taskdebugging, as described herein. While the non-transitorymachine-readable storage medium 528 is shown in an exemplary embodimentto be a single medium, the term “non-transitory machine-readable storagemedium” should be taken to include a single medium or multiple media(e.g., a centralized or distributed database, or associated caches andservers) that store the one or more sets of instructions. Anon-transitory machine-readable medium includes any mechanism forstoring information in a form (e.g., software, processing application)readable by a machine (e.g., a computer). The non-transitorymachine-readable medium may include, but is not limited to, magneticstorage medium (e.g., floppy diskette); optical storage medium (e.g.,CD-ROM); magneto-optical storage medium; read-only memory (ROM);random-access memory (RAM); erasable programmable memory (e.g., EPROMand EEPROM); flash memory; or another type of medium suitable forstoring electronic instructions.

The preceding description sets forth numerous specific details such asexamples of specific systems, components, methods, and so forth, inorder to provide a good understanding of several embodiments of thepresent disclosure. It will be apparent to one skilled in the art,however, that at least some embodiments of the present disclosure may bepracticed without these specific details. In other instances, well-knowncomponents or methods are not described in detail or are presented insimple block diagram format in order to avoid unnecessarily obscuringthe present disclosure. Thus, the specific details set forth are merelyexemplary. Particular embodiments may vary from these exemplary detailsand still be contemplated to be within the scope of the presentdisclosure.

Additionally, some embodiments may be practiced in distributed computingenvironments where the non-transitory machine-readable medium is storedon and or executed by more than one computer system. In addition, theinformation transferred between computer systems may either be pulled orpushed across the communication medium connecting the computer systems.

Embodiments of the claimed subject matter include, but are not limitedto, various operations described herein. These operations may beperformed by hardware components, software, firmware, or a combinationthereof.

Although the operations of the methods herein are shown and described ina particular order, the order of the operations of each method may bealtered so that certain operations may be performed in an inverse orderor so that certain operation may be performed, at least in part,concurrently with other operations. In another embodiment, instructionsor sub-operations of distinct operations may be in an intermittent oralternating manner.

The above description of illustrated implementations of the invention,including what is described in the Abstract, is not intended to beexhaustive or to limit the invention to the precise forms disclosed.While specific implementations of, and examples for, the invention aredescribed herein for illustrative purposes, various equivalentmodifications are possible within the scope of the invention, as thoseskilled in the relevant art will recognize. The words “example” or“exemplary” are used herein to mean serving as an example, instance, orillustration. Any aspect or design described herein as “example” or“exemplary” is not necessarily to be construed as preferred oradvantageous over other aspects or designs. Rather, use of the words“example” or “exemplary” is intended to present concepts in a concretefashion. As used in this application, the term “or” is intended to meanan inclusive “or” rather than an exclusive “or”. That is, unlessspecified otherwise, or clear from context, “X includes A or B” isintended to mean any of the natural inclusive permutations. That is, ifX includes A; X includes B; or X includes both A and B, then “X includesA or B” is satisfied under any of the foregoing instances. In addition,the articles “a” and “an” as used in this application and the appendedclaims should generally be construed to mean “one or more” unlessspecified otherwise or clear from context to be directed to a singularform. Moreover, use of the term “an embodiment” or “one embodiment” or“an implementation” or “one implementation” throughout is not intendedto mean the same embodiment or implementation unless described as such.Furthermore, the terms “first,” “second,” “third,” “fourth,” etc. asused herein are meant as labels to distinguish among different elementsand may not necessarily have an ordinal meaning according to theirnumerical designation.

It will be appreciated that variants of the above-disclosed and otherfeatures and functions, or alternatives thereof, may be combined intomay other different systems or applications. Various presentlyunforeseen or unanticipated alternatives, modifications, variations, orimprovements therein may be subsequently made by those skilled in theart which are also intended to be encompassed by the following claims.The claims may encompass embodiments in hardware, software, or acombination thereof

What is claimed is:
 1. A method, comprising: receiving, from a firstvirtual machine, a request to access a physical device of a computingdevice; and assigning, by a processing device, the physical device tothe first virtual machine in view of power state information associatedwith the physical device of the computing device, wherein the powerstate information is received from one or more other virtual machines ofthe computing device.
 2. The method of claim 1, wherein: the power stateinformation comprises data indicating that a second virtual machine hastransitioned a virtual device of the second virtual machine to a reducedpower state; the reduced power state indicates that the second virtualmachine is no longer using the virtual device; and the virtual device isas associated with the physical device of the computing device.
 3. Themethod of claim 1, wherein receiving the request to access the physicaldevice of the computing device comprises: receiving, from the firstvirtual machine, a second power state information indicating a secondrequest to transition a virtual device of the first virtual machine toan active power state, wherein the virtual device is associated with thephysical device of the computing device.
 4. The method of claim 1,further comprising: determining whether the physical device of thecomputing device is available in view of power state informationassociated with the physical device of the computing device.
 5. Themethod of claim 4, wherein the physical device is assigned to the firstvirtual machine in response to determining that the physical device ofthe computing device is available.
 6. The method of claim 4, whereindetermining whether the physical device of the computing device isavailable in view of power state information associated with thephysical device of the computing device comprises: determining whetherany virtual devices of the first virtual machine and the one or moreother virtual machines are in an active power state, in view of thepower state information; and in response to determining that no virtualdevices of the first virtual machine and the one or more other virtualmachines are in an active power state, determining that the physicaldevice is available.
 7. The method of claim 4, further comprising: inresponse to determining that the physical device of the computing deviceis unavailable, reassigning the physical device of the computing deviceto the first virtual machine from a second virtual machine, wherein thesecond virtual machine was previously assigned the physical device. 8.The method of claim 4, further comprising: in response to determiningthat the physical device of the computing device is unavailable,preventing the first virtual machine from accessing to the physicaldevice of the computing device.
 9. The method of claim 4, furthercomprising: in response to determining that the physical device of thecomputing device is unavailable: periodically analyzing additional powerstate information received from the one or more other virtual machinesto determine when the physical device of the computing device becomesavailable; and reassigning the physical device of the computing deviceto the first virtual machine in response to determining that thephysical device has become available.
 10. The method of claim 4, furthercomprising: in response to determining that the physical device of thecomputing device is unavailable, providing a message to a user, whereinthe message indicates that the first virtual machine is requestingaccess to the physical device of the computing device.
 11. The method ofclaim 4, further comprising: in response to determining that thephysical device of the computing device is unavailable, providing amessage to the first virtual machine, wherein the message indicates thatthe physical device of the computing device is unavailable.
 12. Anapparatus, comprising: a memory to store data; a processing deviceoperatively coupled to the memory, the processing device to: receive,from a first virtual machine, a request to access a physical device of acomputing device; and assign, by a processing device, the physicaldevice to the first virtual machine in view of power state informationassociated with the physical device of the computing device, wherein thepower state information is received from one or more other virtualmachines of the computing device.
 13. The apparatus of claim 12, whereinthe processing device is further to: determine whether the physicaldevice of the computing device is available in view of power stateinformation associated with the physical device of the computing device.14. The apparatus of claim 13, wherein the physical device is assignedto the first virtual machine in response to determining that thephysical device of the computing device is available.
 15. The apparatusof claim 13, wherein the processing device is further to: in response todetermining that the physical device of the computing device isunavailable, reassign the physical device of the computing device to thefirst virtual machine from a second virtual machine, wherein the secondvirtual machine was previously assigned the physical device.
 16. Theapparatus of claim 13, wherein the processing device is further to: inresponse to determining that the physical device of the computing deviceis unavailable, prevent the first virtual machine from accessing to thephysical device of the computing device.
 17. The apparatus of claim 13,wherein the processing device is further to: in response to determiningthat the physical device of the computing device is unavailable:periodically analyze additional power state information received fromthe one or more other virtual machines to determine when the physicaldevice of the computing device becomes available; and reassign thephysical device of the computing device to the first virtual machine inresponse to determining that the physical device has become available.18. The apparatus of claim 13, wherein the processing device is furtherto: in response to determining that the physical device of the computingdevice is unavailable, provide a message to a user, wherein the messageindicates that the first virtual machine is requesting access to thephysical device of the computing device.
 19. The apparatus of claim 13,wherein the processing device is further to: in response to determiningthat the physical device of the computing device is unavailable, providea message to the first virtual machine, wherein the message indicatesthat the physical device of the computing device is unavailable.
 20. Anon-transitory computer-readable storage medium including instructionsthat, when executed by a processing device, cause the processing deviceto: receive, from a first virtual machine, a request to access aphysical device of a computing device; and assign, by a processingdevice, the physical device to the first virtual machine in view ofpower state information associated with the physical device of thecomputing device, wherein the power state information is received fromone or more other virtual machines of the computing device.